Python

您所在的位置:网站首页 python 生日 Python

Python

2024-06-05 23:38| 来源: 网络整理| 查看: 265

一.引言

函数是一段具有特定功能的、可重用的语句组,用函数名来表示并通过函数名进行功能调用。 函数也可以看作是一段具有名字的子程序,可以在需要的地方调用执行,不需要在每个执行地方重复编写这些语句。将可能需要反复执行的代码封装为函数,不仅可以实现代码的复用,更重要的是可以保证代码的一致性,只需要修改该函数代码则所有调用均受到影响。 每次使用函数可以提供不同的参数作为输入,以实现对不同数据的处理;函数执行后,还可以反馈相应的处理结果。

二.定义

1.函数分类: 系统自带函数: Python内嵌的函数(如abs()、eval())、 Python标准库中的函数(如math库中的sqrt())等 自定义函数:用户自己编写的

2.使用函数目的:降低编程的难度,代码重用

3.函数定义:使用def语句

def ():  '''注释'''                         #对函数的说明       return     #仅在需要返回结果时使用

 

4.函数组成

函数名:可以是任何有效的Python标识符

参数列表:是调用函数时传递给它的值(可以由多个,一个,或者零个参数组成,当有多个参数时,各个参数用逗号分隔) 参数个数大于等于零,多个参数由逗号分隔

函数体:函数被调用时执行的代码,由一个或多个语句组成

形式参数:定义函数时,函数名后面圆括号中的变量,简称“形参”。形参只在函数内部有效。

实际参数:调用函数时,函数名后面圆括号中的变量,简称 “实参”。

函数调用的一般形式:([参数列表])

例:

 

函数功能:将传给它的数值增1,返回增加后的值 return语句:结束函数调用,并将结果返回给调用者 return语句是可选的,可出现在函数体的任意位置 没有return语句,函数在函数体结束位置将控制权返回给调用方

三.实例

例子1:编写一个程序打印“ Happy Birthday” 的歌词 标准的歌词: Happy Birthday to you! Happy Birthday to you! Happy Birthday, dear Happy Birthday to you!

 

方法1:使用四个print语句给Mike唱生日快乐歌的程序代码:

 

方法2:使用函数来打印歌词的第一、二、四行定义函数happy()定义函数实现为Mike打印生日歌的歌词

 

 

例子2:写出给Mike和Lily唱生日歌的程序给Lily唱生日歌的程序

 

 

例子3:简化程序,编写通用函数唱生日歌person参数:此变量在函数被调用时初始化

sing()函数只需在函数调用的时候提供名字作为参数如:sing(“Mike”)

 

综合例子:利用sing(),为Mike、 Lily和Elmer三个人唱生日歌。

 

关于注释:在定义函数时,开头部分的注释并不是必需的,但是如果为函数的定义加上这段注释的话,可以为用户提供友好的提示和使用帮助。

 

例如,把上述唱生日歌函数改写如下:

 

关于函数定义的说明:

函数形参不需要声明其类型,也不需要指定函数返回值类型;

即使该函数不需要接收任何参数,也必须保留一对空的圆括号;

括号后面的冒号必不可少;

函数体相对于def关键字必须保持一定的空格缩进。

 

例如,

编写函数,接收两个整数,并输出其中最大数。

 

这个程序并不是很好,如果输入的参数不支持比较运算,会出错。 可结合异常处理机制来解决。

例1:编写函数计算圆的面积。

 

 

形参与实参

函数定义时括弧内为形参(Parameters),一个函数可以没有形参,但是括弧必须要有,表示该函数不接受参数。

函数调用时向其传递实参(arguments),将实参的值或引用传递给形参。

在函数内直接修改形参的值不影响实参。

绝大多数情况下,在函数内部直接修改形参的值不会影响实参。

def addOne(a):

      print(a)

      a += 1

      print(a)

 

如果传递给函数的是Python可变序列,并且在函数内部使用下标或其它方式为可变序列增加、删除元素或修改元素值时,修改后的结果是可以反映到函数之外的,即实参也得到了相应的修改。

 >>> def modify(v): #修改列表元素值  v[0] = v[0]+1 >>> a = [2] >>> modify(a) >>> a [3]

 

在Python中,函数参数有很多种:可以为普通参数、默认值参数、关键参数、可变长度参数等等。 Python函数的定义非常灵活,在定义函数时不需要指定形参的类型,也不需要指定函数的返回值类型,由函数中的return语句来决定; 如果函数中没有return语句或者没有执行到return语句而返回或者执行了不带任何值的return语句,则默认返回空值None。 函数编写如果有问题,只有在调用时才能被发现,传递某些参数时执行正确,而传递另一些类型的参数时则出现错误。

 

默认值参数

def 函数名(形参名=默认值,……)         函数体 默认值参数必须出现在函数参数列表的最右端,且任何一个默认值参数右边不能有非默认值参数。

 

调用带有默认值参数的函数时,可以不对默认值参数进行赋值,也可以赋值,具有较大的灵活性。

可以使用函数名.__defaults__查看默认参数的当前值

 

关键参数

关键参数主要指实参,即调用函数时的参数传递方式,与函数定义无关。 通过关键参数传递,实参顺序可以和形参顺序不一致,但不影响传递结果,避免了用户需要牢记位置参数顺序的麻烦。

 

 

可变长度的参数

可变长度参数主要有两种形式:*parameter和**parameter,前者用来接受多个实参并将其放在一个元组中,后者接受字典形式的实参。

 

 

 

案例,编写函数,接收任意多个实数,返回一个元组,其中第一个元素为所有参数的平均值,其他元素为所有参数中大于平均值的实数。

 

参数的序列解包

传递参数时,可以通过在实参序列前加星号将其解包,然后传递给多个单变量形参。

 

return语句

return语句用来从一个函数中返回,即跳出函数,同时可用return语句从函数中返回一个任意类型的值。

不论return语句出现在函数的什么位置,一旦执行将直接结束函数。

如果函数没有return语句或者执行了不返回任何值的return语句,Python将认为该函数以return None结束。

def fmax ( x, y ):

      if x>y:

      return x

      else:

      return y

在调用内置数据类型的方法时,一定要注意该方法有没有返回值。

变量的作用域

变量起作用的范围称为变量的作用域。 一个变量在函数外部定义和在函数内部定义,其作用域是不同的。

函数内部定义的变量一般为局部变量,不属于任何函数的变量一般为全局变量。

局部变量的引用比全局变量速度快。 globals(),locals()

 

局部变量与全局变量

在函数内定义的变量只在该函数内起作用,称为局部变量

函数结束时,其局部变量被自动删除。

如果想要在函数内部给一个定义在函数外的变量赋值,那么这个变量就不能是局部的,其作用域必须为全局的,

能够同时作用于函数内外,称为全局变量,可以通过global来定义。

 

全局变量

global定义全局变量:

a,一个变量已在函数外定义,如果在函数内需要为这个变量赋值,并要将这个赋值结果反映到函数外,可以在函数内用global声明这个变量,将其定义为全局变量。

b,在函数内部直接将一个变量声明为全局变量,在函数外没有声明,在调用这个函数之后,将增加为新的全局变量。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3